package org.ffrl.base;

public class OperatorDemo {
    
    
    
    public static void main(String[] args) {
        int a = 2; // 10
        int b = 3; // 11
        int c = 4; // 100 
        int d = 5; // 101
        System.out.println("a = " + a + ", b = " + b + ", c = " + c + ", d = " + d);
        System.out.println("&(与)：两个数都转为二进制，然后从高位开始比较，如果两个数都为1则为1，否则为0。");
        System.out.println("a&b : " + (a & b));
        System.out.println("|(与)：两个数都转为二进制，然后从高位开始比较，两个数只要有一个为1则为1，否则就为0。");
        System.out.println("a|b ：" + (a | b));
        System.out.println("~(非)：如果位为0，结果是1，如果位为1，结果是0.");
        System.out.println("~a ：" + (~a));
        System.out.println("^(异或)：两个操作数的位中，相同则结果为0，不同则结果为1.");
        System.out.println("a^a ：" + (a ^ a));
        System.out.println("a^b ：" + (a ^ b));
        System.out.println(">>(右移)：如果该数为正，则高位补0，若为负数，则高位补1");
        System.out.println("a>>2 ：" + (a >> 2));
        System.out.println(">>>(无符号右移)：也叫逻辑右移，即若该数为正，则高位补0，而若该数为负数，则右移后高位同样补0");
        System.out.println("-2>>>2 ：" + (-2 >>> 2));
    }
    
   
}
